/**
 * 缺陷工具函数
 * 注意：这些函数已迁移到 composables，保留此文件仅为向后兼容
 * 建议直接使用 useDefectStates() 和 useDefectOptions() composables
 */

import type { TagType } from '@/types' 
import { useDefectStates } from '@/composables/useDefectStates'
import { useDefectOptions } from '@/composables/useDefectOptions'

// 获取 composables 实例（注意：这些函数在组件外部调用时可能无法正常工作）
// 建议在组件内部直接使用 composables

/**
 * @deprecated 请使用 useDefectStates().getStatusName() 替代
 */
export const getDefectStatusText = (status: string) => {
  // 尝试使用 composables（如果可用）
  try {
    const { getStatusName } = useDefectStates()
    const name = getStatusName(status)
    if (name && name !== status) return name
  } catch {
    // composables 不可用时使用后备映射
  }
  
  // 后备映射（向后兼容）
  const statusMap: Record<string, string> = {
    new: '新建',
    assigned: '已分派',
    in_progress: '处理中',
    resolved: '已解决',
    verified: '已验证',
    closed: '已关闭',
    reopened: '已重新打开'
  }
  return statusMap[status] || status
}

/**
 * @deprecated 请使用 useDefectStates().getStatusType() 替代
 */
export const getDefectStatusType = (status: string): TagType => {
  // 尝试使用 composables（如果可用）
  try {
    const { getStatusType } = useDefectStates()
    return getStatusType(status) as TagType
  } catch {
    // composables 不可用时使用后备映射
  }
  
  // 后备映射（向后兼容）
  const statusMap: Record<string, TagType> = {
    new: 'info',
    assigned: 'warning',
    in_progress: 'primary',
    resolved: 'success',
    verified: 'success',
    closed: 'success',
    reopened: 'warning'
  }
  return statusMap[status] || 'info'
}

/**
 * @deprecated 请使用 useDefectOptions().getSeverityName() 替代
 */
export const getDefectSeverityText = (severity: string) => {
  // 尝试使用 composables（如果可用）
  try {
    const { getSeverityName } = useDefectOptions()
    const name = getSeverityName(severity)
    if (name && name !== severity) return name
  } catch {
    // composables 不可用时使用后备映射
  }
  
  // 后备映射（向后兼容）
  const severityMap: Record<string, string> = {
    critical: '严重',
    major: '主要',
    minor: '次要',
    trivial: '轻微'
  }
  return severityMap[severity] || severity
}

/**
 * @deprecated 请使用 useDefectOptions().getSeverityType() 替代
 */
export const getDefectSeverityType = (severity: string): TagType => {
  // 尝试使用 composables（如果可用）
  try {
    const { getSeverityType } = useDefectOptions()
    return getSeverityType(severity) as TagType
  } catch {
    // composables 不可用时使用后备映射
  }
  
  // 后备映射（向后兼容）
  const severityMap: Record<string, TagType> = {
    critical: 'danger',
    major: 'warning',
    minor: 'warning',
    trivial: 'info'
  }
  return severityMap[severity] || 'info'
}

/**
 * @deprecated 请使用 useDefectOptions().getPriorityType() 替代
 */
export const getDefectPriorityType = (priority: string) => {
  // 尝试使用 composables（如果可用）
  try {
    const { getPriorityType } = useDefectOptions()
    return getPriorityType(priority) as TagType
  } catch {
    // composables 不可用时使用后备映射
  }
  
  // 后备映射（向后兼容）
  const priorityMap: Record<string, TagType> = {
    lowest: 'info',
    low: 'info',
    medium: 'warning',
    high: 'danger',
    urgent: 'danger',
    critical: 'danger',
    blocker: 'danger'
  }
  return priorityMap[priority] || 'primary'
}
